package com.loveprogrammer.eternity.model.task;

import com.loveprogrammer.eternity.model.mission.MissionDefinition;
import lombok.Data;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

/**
 * @ClassName TaskDefinition
 * @Description 任务定义
 *    1、 任务只能由NPC发布 奖励也必须到NPC处领取
 *    2、 前置任务只能有一个，但是后置任务可以有多个
 *    3、 领取的地点和npc 交付的地点和npc
 * @Author eric
 * @Date 2023/8/7 15:17
 * @Version 1.0
 */
@Data
public class TaskDefinition implements Serializable {

    private String taskId;

    private String name;

    private List<String> preTaskIds;

    private List<String> nextTaskIds;

    // 获取任务的npcId
    private String claimNpcId;

    private String claimMapId;

    /**
     * 获得任务的对话
     */
    private String claimDialogue;

    /**
     * 获得任务的对话
     */
    private String checkTaskDialogue;

    // 获取任务的npcId
    private String submitNpcId;

    private String submitMapId;

    private String submitDialogue;

    /**
     * 状态 0 未开始 1 进行中 2 暂定 3 待领奖 5 已完成  9 放弃
     */
    private Integer status;

    // 是哪个任务 奖励如何等等
    private MissionDefinition mission;

    // 任务描述
    private String missionDesc;

    /***
     *
     */
    private String missionClass;

    /***
     *
     */
    private String missionRewardClass;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        TaskDefinition that = (TaskDefinition) o;
        return Objects.equals(taskId, that.taskId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(taskId);
    }
}
